<?php
final class hdphp {
      static public function run() {
            //设置网站常量
            self::setConst();
            //加载框架核心文件
            self::coreFile();
            //创建应用初始化目录
            self::createBaseFile();
            //设置类自动加载机制  array(__CLASS__,"autoload")当前类中的方法（固定写法）
            spl_autoload_register(array(__CLASS__, "autoload")); 
            //加载应用配置项
            self::loadConfig();
            //执行app中的方法
            App::run();
      }
      /**
       * 设置网站常量
       */
      static private function setConst() {
            define("HDPHP_PATH", dirname(__FILE__) . '/'); //框架目录
            define("APP_PATH", dirname($_SERVER['SCRIPT_FILENAME']) . '/' . APP_NAME . '/'); //应用目录
            define("CONTROL_PATH", APP_PATH . 'Control/'); //控制器目录
            define("TPL_PATH", APP_PATH . 'Tpl/'); //模板目录
            define("EXTEND_PATH", APP_PATH . 'Extend/'); //扩展目录
            define("CONFIG_PATH", APP_PATH . 'Config/'); //应用配置项目录
            define("__WEB__", 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME']); //网站入口文件
            define("__ROOT__", dirname(__WEB__)); //网站域名
      }

      /**
       *  加载框架核心文件
       */
      static private function coreFile() {
            $coreFiles = require HDPHP_PATH . 'Core/coreFile.php';          
            foreach ($coreFiles as $f) {
                  require $f;
            }
      }

      /**
       * 创建应用初始化目录
       */
      static private function createBaseFile() {
            if (is_dir(APP_PATH)) {//如果存在，就不创建了
                  return;
            }
            $dirs = array(
                APP_PATH,
                CONTROL_PATH,
                TPL_PATH,
                EXTEND_PATH,
                CONFIG_PATH
            );
            foreach ($dirs as $d) {
                  is_dir($d) or mkdir($d, true, 0755);
            }
            //创建初始控制器类（欢迎页面  新创建应用目录时显示）
            $control = <<<str
                     <?php
                   class IndexControl{
                     public function index(){
                           header("Content-type:text/html;charset=utf-8");
                     echo "<h1> :) 欢迎使用HDPHP框架！ :) </h1>";
                        }
                   }
     ?>   
str;
            file_put_contents(CONTROL_PATH . "IndexControl.class.php", $control);
            copy(HDPHP_PATH.'Tpl/config.php',CONFIG_PATH.'config.php');//复制基本配置文件
      }

      /**
       * 设置类自动加载机制
       */
      static private function autoload($class) {
            $classFile = $class . '.class.php';
            if (load(array(
                        HDPHP_PATH . 'Core/' . $classFile,
                        HDPHP_PATH . 'Tool/' . $classFile,
                        EXTEND_PATH . $classFile
                    ))){
                  return true;
            }else if(substr($class, -7)=="Control"){
                  load(CONTROL_PATH.$classFile);
            }else if(substr($class, -4)=="View"){
                  load(HDPHP_PATH.'Driver/View/'.$classFile);
            }else if(substr($class, -5)=="Model"){
                  load(HDPHP_PATH.'Driver/Model/'.$classFile);
            }
      }
      //加载应用配置项
      static private function loadConfig(){
            //加载框架基本配置项
            is_readable(HDPHP_PATH.'Config/config.php') and C(require  HDPHP_PATH.'Config/config.php');
            //加载应用配置项
            $appConfigFile=CONFIG_PATH.'config.php';
            is_file($appConfigFile) and is_readable($appConfigFile) and C(require $appConfigFile);
      }

}

hdphp::run();
?>
